import type { DateItem, TimeItem } from './type'
/**
 * 时间范围对象
 */
export class TimeRange {
  startTime: string
  endTime: string
}
/**
 * 生成预定信息需要的数据
 */
export class GeneratePredetermineDatesAndTimeRangesNeedInfo {
  /**
   * 可预订天数及它的具体有效可预约时间[['7:30~10:30','11:00~15:30'],[],[]]
   * index=0的是今天的，以此类推..
   */
  predetermineDaysValidPeriod: Array<Array<TimeRange>>
  /**
   * 必要时间，如制作餐食（分钟）
   */
  makeTime: number
}
/**
 * 一个预定日期时间item
 */
export class PredetermineDateAndTime {
  dateItem: DateItem
  timeItem: TimeItem

  public static format(appointmentTimeItem: PredetermineDateAndTime | undefined | null) {
    return appointmentTimeItem ? `${appointmentTimeItem.dateItem.ymdLabel} ${appointmentTimeItem.timeItem.time}` : ''
  }
}
// 生成器生成的可选择预约信息
export class GeneratedPredetermineDatesAndTimeRangesInfo {
  /**
   * 立即预计时间的格式化时间 (如果没有传入配送时间deliveryTime，则不会生成问立即配送时间)
   */
  immediatePredetermineTime: PredetermineDateAndTime

  /**
   * 生成的预约时间段选择
   */
  datesTimes: DateItem[]

  // 看传入的一个PredetermineDateAndTime对象是否是“尽快送达”的项
  public isImmediateDateAndTime(predetermineDateAndTime: PredetermineDateAndTime): boolean {
    const isDateEquals =
      predetermineDateAndTime.dateItem.ymdFormat === this.immediatePredetermineTime.dateItem.ymdFormat
    const isTimeEquals = predetermineDateAndTime.timeItem.time === this.immediatePredetermineTime.timeItem.time
    return isDateEquals && isTimeEquals
  }
}
